//Programmierer: Christian Lechner

#include "ausfuehren.h"

/*Globale Variablen:*/
PAINTSTRUCT		ps;
double robo1[6][2];						
double robo1_n[6][2];
double robo2[10][2];
double robo2_n[10][2];
double hand[19][2];
double hand_n[19][2];
double schweisser[9][2];
double schweisser_n[9][2];
double blech1[100][2];
double blech1_n[100][2];
double blech2[110][2];
double blech2_n[110][2];
double feuer[8][2];						//Lichtstrahlen beim Schweißen
double feuer_n[8][2];
int anz_p_b1, anz_p_b2, anz_p_s;		//Anzahl Punkte Blech1, Blech2 und Schweißpunkte
int h;									//h=1:Hand offen; h=0:Hand geschlossen
int z;									//Hilfsvariable für gezeichnete Schweißpunkte
int l1,l2;								//Längen der Arme
int r1;									//Radien der Arme
int r2;
int r3;

/*
-------------------------------------------------------
Funktion "void ausfuehren.." ist aus Gründen der Übersichtlichkeit aus der main.c ausgenommen.
Ihr werden die nötigen Zeichnungsvariablen von Windows (hwnd, hdc und rect) übergeben.
In ihr werden alle restlichen Funktionen aufgerufen.
-------------------------------------------------------					
*/


void ausfuehren  (HWND hwnd, HDC hdc, RECT rect)
{
	int i;

	z=0;					//Zählervariable für Schweißpunkte
	h=1;					//Zustandsvariable für Hand

	werte();				//Geometrie für Arme, Hand, Schweißgerät und Schweißlicht wird definiert
	
	anz_p_b1 = einlesen("blech1a.csv", blech1);				//Geometrie der Bleche und Scheißpunkte werden aus Dateien eingelesen
	anz_p_b2 = einlesen("blech2a.csv", blech2);
	anz_p_s =  einlesen("schweisspunktea.csv", blech2+anz_p_b2);

	for (i=0;i<6;i++)		//Verschiebung des 1. Arms in die Ausgangsposition
	{
		robo1_n[i][0] = robo1[i][0] + 350;
		robo1_n[i][1] = robo1[i][1] + 300;
	}


	for (i=0;i<10;i++)		//Verschiebung des 2. Arms in die Ausgangsposition
	{
		robo2_n[i][0] = robo2[i][0] + robo1_n[5][0];
		robo2_n[i][1] = robo2[i][1] + robo1_n[5][1];
	}

	for (i=0;i<19;i++)		//Verschiebung der Hand in den Werkzeugschrank
	{
		hand_n[i][0] = hand[i][0] + 525;
		hand_n[i][1] = hand[i][1] + 100;
	}

	for (i=0;i<9;i++)		//Verschiebung des Schweißgeräts in den Werkzeugschrank
	{
		schweisser_n[i][0] = schweisser[i][0] + 475;
		schweisser_n[i][1] = schweisser[i][1] + 100;
	}

	for (i=0;i<anz_p_b1;i++)		//Verschiebung des 1. Blechs auf Fließband 1
	{
		blech1_n[i][0] = blech1[i][0] - 100;
		blech1_n[i][1] = blech1[i][1] + 150;
	}

	for (i=0;i<anz_p_b2+anz_p_s;i++)		//Verschiebung des 2. Blechs auf Fließband 2
	{
		blech2_n[i][0] = blech2[i][0] - 100;
		blech2_n[i][1] = blech2[i][1] + 450;
	}

	Zeichne_Statische_Elemente(hdc);			//Startbild
	Zeichne_Dynamische_Elemente(hdc);
	Sleep(1000);


/* Start des Bewegungsvorgangs */

	/*bewegen(hwnd , hdc, X-Zielposition, Y-Zielposition, Greifervariable, X-Schienenendposition,
	Bewegungsdauer, Fließbandvariable Blech 1, Fließbandvariable Blech 2)
	*/

	bewegen(hwnd, hdc, rect, 525, 100, 0, 525, 2000, 1, 3);		//Robo fährt zur Hand - Blech 1 wird reingefahren
		Sleep(250);
	bewegen(hwnd, hdc, rect, 250, 150, 1, 350, 2000, 3, 3);		//Robo fährt zu Blech 1 auf Eingangsfließband
	
	bewegen(hwnd, hdc, rect, 800, 220, 2, 750, 2800, 0, 1);		//Robo bringt Blech 1 auf Schweißtisch - Blech 2 wird reingefahren
	
	bewegen(hwnd, hdc, rect, 250, 450, 1, 370, 2000, 3, 3);		//Robo fährt zu Blech 2 auf Eingangsfließband
	
	bewegen(hwnd, hdc, rect, 800, 220, 2, 750, 2400, 3, 0);		//Robo bringt Blech 2 auf Schweißtisch

	bewegen(hwnd, hdc, rect, 525, 100, 2, 525, 2000, 3, 3);		//Robo bringt Hand zurück
		Sleep(250);
	bewegen(hwnd, hdc, rect, 475, 100, 0, 475, 400, 3, 3);		//Robo holt sich Schweißgerät
		Sleep(250);
	bewegen(hwnd, hdc, rect, (int)blech2_n[anz_p_b2][0], (int)blech2_n[anz_p_b2][1], 3, 750, 2000, 3, 3);	//Robo fährt zum ersten Schweißpunkt

	for (i=1;i<=anz_p_s;i++)					//Schweißpunkte werden geschweißt
	{
		Zeichne_Feuer(hdc);						//Lichtstahlen werden für 1 Sekunde gesetzt
	
		z++;		//Zählervariable für Schweißpunkte (wird in zeichne.c verwendet)

		if (i <= (anz_p_s -1 ))	
			bewegen(hwnd, hdc, rect, (int)blech2_n[anz_p_b2+i][0], (int)blech2_n[anz_p_b2+i][1], 3, 750, 400, 3, 3);
		
	}

	bewegen(hwnd, hdc, rect, 475, 100, 3, 475, 2000, 3, 3);		//Robo bringt Schweißgerät zurück
		Sleep(250);
	bewegen(hwnd, hdc, rect, 525, 100, 0, 525, 400, 3, 3);		//Robo holt sich Hand
		Sleep(250);
	bewegen(hwnd, hdc, rect, 800, 220, 1, 725, 2000, 3, 3);		//Robo fährt zu den Blechen
		
	bewegen(hwnd, hdc, rect, 650, 450, 2, 600, 1500, 0, 0);		//Robo bringt Bleche auf Ausgangsfließband
	
	bewegen(hwnd, hdc, rect, 500, 350, 1, 380, 2000, 2, 2);		//Robo fährt in die Mitte - verschweißte Bleche fahren weg
	
}